#ifndef AKMAINWINDOW_H
#define AKMAINWINDOW_H

#include <QtGui/QMainWindow>
#include <QtDeclarative/QtDeclarative>
#include <akmodel.h>


class AKMainWindow : public QMainWindow
{
	Q_OBJECT

public:
	AKMainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
	~AKMainWindow();

private:
	void initialize();
	void createActions();
	void createMenus();
	void createToolBars();
	void createWidgets();
	void createStatusBar();

	//////////////////////////////////////////////////////////////////////////

	// actions
	QAction *openAct;
	QAction *exitAct;
	QAction *aboutAct;

	// menus
	QMenu *fileMenu;
	QMenu *editMenu;
	QMenu *viewMenu;
	QMenu *helpMenu;

	//////////////////////////////////////////////////////////////////////////
	
	// main window
	QWidget mMainWidget;

	// group box: file import (FI)
	QGroupBox *mFIGroup;
	QVBoxLayout *mFIVerticalLayout;
	QPushButton *mFIImportButton;
	QListView *mFIListView;

	// group box: file options (FO)
	QGroupBox *mFOGroup;
	QFormLayout *mFOFormLayout;
	QLabel *mFONameLabel;
	QLineEdit *mFONameLineEdit;
	QLabel *mFOCategoryLabel;
	QComboBox *mFOCategoryComboBox;
	QLabel *mFOIconChooserLabel;
	QDeclarativeView *mFOIconChooserDeclarativeView;
	QPushButton *mFOSaveOptionsButton;
	QLabel *mFOPathLabel;
	QLabel *mFOCurrentPathLabel;

	// group box: mass categorizer (MC)
	QGroupBox *mMCGroup;
	QFormLayout *mMCFormLayout;
	QLabel *mMCCategoryLabel;
	QComboBox *mMCCategoryComboBox;
	QPushButton *mMCAssignCategoryButton;

	/// group box: category import (CI)
	QGroupBox *mCIGroup;
	QVBoxLayout *mCIVerticalLayout;
	QPushButton *mCIImportButton;

	/// group box: create group (CG)
	QGroupBox *mCGGroup;
	QFormLayout *mCGFormLayout;
	QLabel *mCGProfileLabel;
	QLineEdit *mCGProfileLineEdit;
	QLabel *mCGProfileComboBoxLabel;
	QComboBox *mCGProfileComboBox;
	QLabel *mCGCategoryLabel;
	QLineEdit *mCGCategoryLineEdit;
	QPushButton *mCGCreateCategoryButton;
	QPushButton *mCGCreateProfileButton;

	// group box: abstract model (AM)
	QGroupBox *mAMGroup;
	QVBoxLayout *mAMVerticalLayout;
	QPushButton *mAMUpdateButton;
	QListView *mAMListView;

	//////////////////////////////////////////////////////////////////////////

	QStringList mImportPaths;
	QStringList mNewImportPaths;
	QStringList mFormatFilters;

private slots:
	void open();
	void about();
};

#endif // AKMAINWINDOW_H